#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>

int main()
{
    // 创建子进程:fork是一个函数，函数执行前，只有一个父进程，函数执行后，有两个进程：父进程+子进程
    pid_t id = fork();
    
    if(id < 0)
    {
        perror("fork"); // 创建子进程失败
        exit(-1);   // 直接退出程序
    }
    else if(id == 0)
    {
        // child process
        while(1)
        {
            printf("我是子进程, pid:%d, ppid:%d, id:%d\n",getpid(), getppid(),id);
            sleep(1);
        }
    }
    else
    {
        // parent process
        while(1)
        {
            printf("我是父进程, pid:%d, ppid:%d, id:%d\n",getpid(), getppid(),id);
            sleep(2);
        }
    }

    // 同一个变量id，在后续不会被修改的情况下，竟然有不同的内容！
    //printf("我是一个进程, pid:%d, ppid:%d, id:%d\n",getpid(), getppid(),id);
    

    //while(1) 
    //{
    //    printf("我是一个进程，我的PID是:%d，父进程的PID是:%d\n", getpid(),getppid());
    //    sleep(1);
    //}
    
    return 0;
}
